// 推荐模块类型定义

import { ContentImage, ContentVideo } from '../content/content';

// 任务状态枚举
export enum TaskStatus {
  PENDING = 'PENDING',
  PROCESSING = 'PROCESSING', 
  COMPLETED = 'COMPLETED',
  FAILED = 'FAILED'
}

// 推荐内容类型枚举（与内容模块的ContentType保持一致）
export enum RecommendationContentType {
  IMAGE = 'IMAGE',
  VIDEO = 'VIDEO'
}



// 推荐内容数据结构
export interface RecommendationContent {
  id: number;
  userId: number;
  username: string;
  userAvatar: string;
  contentType: RecommendationContentType;
  title: string;
  textContent: string;
  coverUrl: string;
  likeCount: number;
  commentCount: number;
  viewCount: number;
  isPublished: boolean;
  isLiked: boolean;
  createdAt: string;
  updatedAt: string;
  images: ContentImage[];
  videos: ContentVideo[];
}

// 系统配置数据结构
export interface SystemConfigDTO {
  batchSize: number;
  maxConcurrent: number;
  waitRetryInterval: number;
  maxNoLockAttempts: number;
}

// 任务状态统计数据结构
export interface TaskStatusStatistics {
  [TaskStatus.PENDING]: number;
  [TaskStatus.PROCESSING]: number;
  [TaskStatus.COMPLETED]: number;
  [TaskStatus.FAILED]: number;
}

// 内容特征任务统计响应数据结构
export interface ContentFeatureStatistics {
  failedTaskCount: number;
  taskStatusStatistics: TaskStatusStatistics;
  systemConfig: SystemConfigDTO;
}

// 重试失败任务响应数据结构
export interface RetryFailedTasksResponse {
  retryCount: number;
  updatedStatistics: TaskStatusStatistics;
}

// 清理超时任务响应数据结构
export interface CleanupTimeoutTasksResponse {
  retryCount: number;
  updatedStatistics: TaskStatusStatistics;
}

// 清理超时任务请求参数
export interface CleanupTimeoutParams {
  timeoutMinutes?: number;
}

// 内容特征维度说明接口（用于文档说明）
export interface ContentFeatureDimensions {
  dim1: number; // 具象vs抽象（0.00=完全具象，1.00=完全抽象）
  dim2: number; // 理性vs情感（0.00=完全理性，1.00=完全情感）
  dim3: number; // 系统vs探索（0.00=完全系统，1.00=完全探索）
  dim4: number; // 个人vs社群（0.00=完全个人，1.00=完全社群）
  dim5: number; // 专业vs通俗（0.00=完全专业，1.00=完全通俗）
  dim6: number; // 经典vs新潮（0.00=完全经典，1.00=完全新潮）
  dim7: number; // 实用vs娱乐（0.00=完全实用，1.00=完全娱乐）
  dim8: number; // 极简vs丰富（0.00=完全极简，1.00=完全丰富）
} 